package model

import (
	"gorm.io/gorm"
	"time"
)

type Work struct {
	Id           uint64         `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	MusicId      uint64         `gorm:"column:music_id;type:int;comment:音乐id;not null;" json:"music_id"`              // 音乐id
	WorkId       uint64         `gorm:"column:work_id;type:int;comment:作品id;not null;" json:"work_id"`                // 作品id
	WorkType     string         `gorm:"column:work_type;type:varchar(5);comment:作品类型;not null;" json:"work_type"`     // 作品类型
	CreateUser   uint64         `gorm:"column:create_user;type:int;comment:作者;not null;" json:"create_user"`          // 作者
	LiveCount    uint64         `gorm:"column:live_count;type:int;comment:作品点赞量;not null;" json:"live_count"`         // 作品点赞量
	CommentId    uint64         `gorm:"column:comment_id;type:int;comment:评论id;not null;" json:"comment_id"`          // 评论id
	CommentCount uint64         `gorm:"column:comment_count;type:int;comment:作品评论量;not null;" json:"comment_count"`   // 作品评论量
	CollectCount uint64         `gorm:"column:collect_count;type:int;comment:作品收藏量;not null;" json:"collect_count"`   // 作品收藏量
	ForwardCount uint64         `gorm:"column:forward_count;type:int;comment:作品转发量;not null;" json:"forward_count"`   // 作品转发量
	LiveStatus   string         `gorm:"column:live_status;type:varchar(5);comment:点赞状态;not null;" json:"live_status"` // 点赞状态
	WorkStatus   string         `gorm:"column:work_status;type:varchar(5);comment:作品状态;not null;" json:"work_status"` // 作品状态
	Reviewer     uint64         `gorm:"column:reviewer;type:int;comment:审核人;not null;" json:"reviewer"`               // 审核人
	CreatedAt    time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt    time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt    gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (w *Work) TableName() string {
	return "work"
}
